package com.yzh.oop6.teacher;

/**
 *内部类：静态成员内部类
 *1.静态内部类只能访问外部类的静态成员
 * 2.如何访问外部类的同名的成员变量
 *  System.out.println(OuterClass.num);//10
 * 3.如何创建静态内部类的对象
 *
 * OuterClass.InnerClass innerClass = new OuterClass.InnerClass();
 *
 *  或者
 *  import com.bjsxt.oop6.OuterClass.InnerClass;
 *  InnerClass innerClass = new InnerClass();
 *
 * 问题：static关键字可以做什么
 * 1.private static String name;
 * 2. public static void methodOut1(){}
 * 3， static{
 *         System.out.println("============code block========");
 *     }
 * 4. public static class InnerClass{}
 *
 * 5. import static java.lang.Math.*;
 *
 *

 */
public class OuterClass {
    //成员变量
    private static String name;
    private static int num=10;

    //构造方法
    public OuterClass() {
    }
    public OuterClass(String name, int num) {
        this.name = name;
        this.num = num;
    }

    //成员方法
    public static void methodOut1(){

    }
    public void methodOut2(){
        //methodInner();
        InnerClass ic = new InnerClass();
        ic.methodInner();
    }


    //代码块
    {
        System.out.println("============code block========");
    }

    //内部类
    public static class InnerClass{
        //成员变量
        private int num = 20;
        //构造方法

        //成员方法
        public void methodInner(){
            int num = 30;
            System.out.println(name);
            methodOut1();
            System.out.println(num);//30
            System.out.println(this.num);//20
            System.out.println(OuterClass.num);//10
        }

        public void methodInner2(){}


        //代码块

        //内部类
    }
}
